//	--------------------------------------------------------------------
//	Copyright(C) 2006,2007 Zhao Yukun. All rights reserved.
//	This file is a part of the Xeres system.
//	Xeres 2007
//	Contact : xeres.engine@gmail.com
//	$(reservedInfo)
//	$(reservedDeclaration)
//	--------------------------------------------------------------------
///	@file	<ScenePresentation.h>
///	@path	~/src/scene/
///	@date	2007/11/14
///	@desc	Scene presentation.

#pragma once

#include "xeres.h"

#include "graphics/IModel.h"

#include "scene/ICamera.h"

namespace xeres {

	/*!
		\class	ScenePresentation
		\brief	Collects and manage live presentations, then turn them into render sequence with right pass.
	*/
	class ScenePresentation
	{
	protected:

		/// \name Constructor & Destructor
		//@{

		/// \ctor
		ScenePresentation( void );

		/// \dtor
		~ScenePresentation( void );

		//@}

		/// \name Internal Manipulation
		//@{

		/// \brief	Begin present scene.
		void BeginPresent( void );

		/// \brief	End present scene.
		void EndPresent( RenderManager& rm );

		/// \brief	Get presentation.
		std::deque< RefWeak<IModel> >& GetPresentation( void ) { return m_models; }

		//@}

	public:

		/// \name Presentation Manipulation
		//@{

		/// \brief	Add model to presentation.
		void AddModel( RefWeak<IModel> model );

		//@}

	private:

		//@ data
		std::deque< RefWeak<IModel> >		m_models;

		// main pass info

		// sub pass info
	};

} // namespace xeres
